

//
//  BinaryTree_insert.swift
//  SwiftyDSA
//
//  Created by Archer on 2018/8/11.
//  Copyright © 2018年 Archer. All rights reserved.
//

import Foundation

extension BinaryTree {
    
    /// 将元素e包装成节点作为节点nd的左孩子插入到二叉树
    /// 这里假设nd没有左孩子
    public func insertAsLC(_ nd: Node<Element>, _ element: Element) -> Node<Element> {
        _size += 1
        nd.insertAsLC(element)
        updateHeightAbove(nd) // nd及其祖先的高度有可能因为插入了一个新节点而发生变化
        return nd.lchild!
    }
    
    /// 将元素e包装成节点作为节点nd的右孩子插入到二叉树
    public func insertAsRC(_ nd: Node<Element>, _ element: Element) -> Node<Element> {
        _size += 1
        nd.insertAsRC(element)
        updateHeightAbove(nd)
        return nd.rchild!
    }
}
